As digital media technology continues to advance and the cost of storage continues to decline, users increasingly host and consume digital media on their own portable and non-portable computing devices, including but not limited to personal computers (for example, primary computers such as desktop or laptop personal computers), hand-held computers, mobile phones/smart phones, personal digital assistants, in-vehicle devices, and personal media rendering devices. Examples of such digital media include music, video, still pictures, and so on.
Such personal computing devices are often equipped to access one or more networks, and network access is virtually ubiquitous, providing users more access to information than ever. There is a growing need for applications that effectively transfer digital media from source devices, both user-controlled source devices and source devices that are controlled by other entities, to the personal computing devices via networks.
In the past, transcoding digital media has been done “on-the-fly”, or at the time the digital media is being transferred from the source device. Transcoding typically includes altering a media file through one or more transcoding processes including, for example, converting the media file from one format to another so the file will play on the device, down-sampling the media file to a lower bit rate to reduce the amount of storage space needed on the device, or adapting the screen size of the file so video appears correctly on the device. One important reason for transcoding may be to convert a media file to a format having lower CPU requirements for decoding. On-the-fly transcoding of digital media generally occurs during synchronization of media content between a source device and a target device, at the time the devices are physically or virtually/logically connected together.
Although transcoding can be a time-consuming process, several factors have generally made the added time needed for on-the-fly transcoding during media transfers a reasonable inconvenience. For example, until recently, most portable media devices were audio-only devices supporting audio file formats such as MP3 and WMA. Transcoding (e.g., changing the bit rate and/or file format) a 3-minute song file while transferring it to a device adds only around 20 seconds to the transfer time. In addition, limited storage capability on a device limits the amount of media that can be transferred to the device, making the time required for transcoding less noticeable.
With portable media devices now able to hold gigabytes of content, however, in addition to more and more of these devices including video capability, the time required for transcoding media content while transferring it to a device can have a much greater adverse impact on the overall user experience. Transferring an increased amount of media content to fill a larger storage capacity on a newer device compounds the problem of the time-consuming transcode process noted above.
In addition, transcoding video content for devices that provide video playback can be much more time intensive than transcoding audio content, which is primarily what has been transcoded for most media devices in the past. As an example, desktop video can consume disk space at rates in excess of 1 GB per hour, and the complexity of the video encoding process causes video transcoding to generally take between ½ and 2× “real time” to complete. Therefore, performing all file transcoding tasks at the actual time that media files are being transferred to a device may no longer be acceptable.
While it may be possible to stream certain content from one device to another in real-time, this option is not always desirable in every situation from a user's perspective-real-time streaming has the potential to be unduly intrusive, disruptive, or distracting for use in a variety of venues. In addition, streaming to a networked portable device may be limited by the availability or type of network connection. For example, popular cellular telephone networking technologies are only available in large open spaces and frequently do not work well inside a building. Users may find that they prefer to transfer large collections of content when network connectivity is good rather than streaming a particular piece of content when desired.
Accordingly, a need exists for a way to reduce the time required for transferring digital media content when transferring the content between a source device and a target device, which may be utilized independent of where the target and source devices are located and whether or not such devices are controlled by the same entity.